// pages/cart/index.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    cart: [],
    totalPrice: 0,
    totalCount: 0,
    selectAll: false
  },

  /**
   * 生命周期函数--监听页面显示
   */
  // tabBar 页不卸载，每次显示的时候获取本地存储最新数据
  onShow: function () {
    // 获取本地存储中的购物车数据
    const cart = wx.getStorageSync('cart') || [];
    // 更新页面列表数据
    this.setData({
      cart
    });

    // 购物车计算调用
    this.cartComputed(cart);
  },

  // 购物车计算封装
  cartComputed(cart) {
    // console.log(cart);
    // 计算前，把总金额和选中个数初始化为0
    let totalPrice = 0,
      totalCount = 0,
      // 假设为 true
      selectAll = true;
    // 遍历购物车数组，计算总金额和选中个数
    cart.forEach(item => {
      if (item.isSelect) {
        // 累加总价格
        totalPrice += item.number * item.goods_price;
        // 累加选中个数(不是商品格式)
        totalCount++;
      } else {
        // 如果有一个没有被选中，就推翻假设
        selectAll = false;
      }
    });

    // 如果购物车数组为空，就不会进入遍历，所以要特殊处理.
    if (cart.length === 0) selectAll = false;

    // 把总价格和选中的个数在页面中更新
    this.setData({
      totalPrice, totalCount, selectAll, cart
    });

    // 更新购物车本地存储数据
    wx.setStorageSync('cart', cart);
  },

  // 全选按钮点击
  changeSelectAll() {
    // 从页面数据总结构选中状态
    let { selectAll, cart } = this.data;
    // 自身取反
    selectAll = !selectAll;
    // 改变购物车列表数据
    cart.forEach(item => {
      // 把购物车所有商品状态改成和全选状态一样
      item.isSelect = selectAll;
    });
    // 更新购物车视图展示
    // this.setData({
    //   selectAll,
    //   cart
    // });
    // 调用购物车计算封装，同步更新本地存储数据
    this.cartComputed(cart);
    // 更新购物车本地存储数据
    // wx.setStorageSync('cart', cart);
  },

  // 商品选择按钮点击
  changeSelectItem(e) {
    // 获取事件参数
    const { index } = e.currentTarget.dataset;
    // 获取购物车数据
    const { cart } = this.data;
    // 当前选择状态取反
    cart[index].isSelect = !cart[index].isSelect;
    // 调用购物车计算封装，同步更新本地存储数据
    this.cartComputed(cart);
  },

  // 改变商品数量
  changeCount(e) {
    // 获取事件参数
    const { index, number } = e.currentTarget.dataset;
    // 获取购物车数据
    const { cart } = this.data;
    // 当 购物车的数量 = 1 && 用户 点击 "-"
    if (number === -1 && cart[index].number === 1) {
      // 小程序的模态提示框
      wx.showModal({
        // title: '是否删除商品',
        content: '是否删除商品',
        showCancel: true,
        cancelText: '取消',
        cancelColor: '#000000',
        confirmText: '删除',
        confirmColor: '#999',
        // 回调函数
        success: (result) => {
          // console.log(result);
          if (result.confirm) {
            // console.log('确定，删除商品');
            cart.splice(index, 1);
            // 调用购物车计算封装，同步更新本地存储数据
            this.cartComputed(cart);
          } else {
            console.log('取消，不删除商品');
          }
        }
      });
    } else {
      // 数据变化
      cart[index].number += number;
      // 调用购物车计算封装，同步更新本地存储数据
      this.cartComputed(cart);
    }
  },
  // 跳转到支付页面
  goToPay(){
    const { totalCount } = this.data;
    if(totalCount){
      wx.navigateTo({
        url: '/pages/pay/index',
      });
    }
  }




});